RAIS  3.2
C:/Projekte/RAIS/Specific Masks/AddEditUsers.aspx.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Data;
00030 using System.Configuration;
00031 using System.Collections;
00032 using System.Web;
00033 using System.Web.Security;
00034 using System.Web.UI;
00035 using System.Web.UI.WebControls;
00036 using System.Web.UI.WebControls.WebParts;
00037 using System.Web.UI.HtmlControls;
00038 
00039 using RAIS.Common.UserManagement;
00040 using RAIS.ApplicationLogicLayer;
00041 
00042 using FunctionRoles = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.FunctionRole>;
00043 using DataRoles = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.DataRole>;
00044 using Facilities = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.Facility>;
00045 using UserTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.UserTypeData>;
00046 
00047 namespace RAIS.UI.SpecificMasks
00048 {
00052     public partial class AddEditUsers : System.Web.UI.Page
00053     {
00057         enum AddEditUsers_PageMode
00058         {
00059             viewUser,
00060             addUser,
00061             editUser
00062         };
00063         protected void Page_PreLoad(object sender, EventArgs e)
00064         {
00065             RAIS.UI.Common.PageManagement.TrimTextBoxValues(this);
00066         }
00067         #region Event handlers
00068 
00074         protected void Page_Load(object sender, EventArgs e)
00075         {
00076             this.Response.Redirect("AddEditUsers_New.aspx");
00077 
00078             if (this.CurrentUser == null)
00079                                 UI.Common.AccessManagement.SignOut(this);
00080                         
00081                         this.LBLresult.Text = "";
00082             if (!this.IsPostBack)
00083             {
00084                 this.BTNdelete.Attributes.Add("onclick", string.Format("javascript: return confirm('{0}');", RAIS.Common.Messages.DELETE_QUESTION_USER.Replace("'", "\\'")));
00085                                 this.LBLusername.Text = this.CurrentUser.Name;
00086                                 
00087                                 UI.Common.UserManagement.InitializeUsersList(this.DDLselecteduser);
00088                 UI.Common.UserManagement.InitializeUserTypesList(this.DDLaputype);
00089                 UI.Common.UserManagement.InitializeDataRolesList(this.DDLeuselectdatarole);
00090                 UI.Common.UserManagement.InitializeFacilitiesList(this.DDLeuselectfacility);
00091                 //UI.Common.UserManagement.InitializeFunctionalRolesList(this.DDLeufunctionalrole);
00092 
00093                 UI.Common.PageManagement.InitializePage(this, this.TreeView1);
00094 //                              this.LBTNmessagebox.Visible = !(this.CurrentUser.FunctionalRole.Type == FunctionRole.FunctionRoleType.Guest);
00095 
00096                 this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.viewUser;
00097 
00098                 this.ShowUser(this.SelectedUser);
00099             }
00100             //this.SetMaskLayout(this.TXTeuusername.Text);
00101         }
00108         protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
00109         {
00110             UI.Common.UserManagement.ProcessTreeViewOnRedirect(this.TreeView1);
00111         }
00118         protected void LBTNlogout_Click(object sender, EventArgs e)
00119         {
00120             UI.Common.AccessManagement.SignOut(this);
00121         }
00128         protected void BTNcreateuser_Click(object sender, EventArgs e)
00129         {
00130             string returnMessage = "";
00131             if (string.IsNullOrEmpty(this.TXTeuusername.Text))
00132             {
00133                 returnMessage = RAIS.Common.Messages.USER_NAME_EMPTY;
00134                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, returnMessage, false);
00135             }
00136             else
00137             if (!this.CreateNewTemporalUser())
00138             {
00139                 UserData user = ApplicationLogicLayer.UserManagement.GetUserData(this.TXTeuusername.Text);
00140                 if (user.Locked)
00141                     this.RecoverLockedUser(user);
00142             }
00143         }
00150         protected void BTNdelete_Click(object sender, EventArgs e)
00151         {
00152             string returnMessage = string.Empty;
00153 
00154             UserData userData = this.SelectedUser;
00155             //userData.Locked = true;
00156                         userData.Status = UserData.UserStatus.Locked;
00157 
00158             bool success = UserManagement.ModifyUser(userData, ref returnMessage);
00159             if (success)
00160             {
00161                 UI.Common.UserManagement.InitializeUsersList(this.DDLselecteduser);
00162                 ShowUser(this.SelectedUser);
00163             }
00164 
00165             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, returnMessage, success);
00166         }
00167 
00174         protected void DDLselecteduser_SelectedIndexChanged(object sender, EventArgs e)
00175         {
00176             ShowUser(this.SelectedUser);
00177             this.EnableDisableControls();
00178         }
00185         protected void RBselectdatarole_CheckedChanged(object sender, EventArgs e)
00186         {
00187             if (this.RBselectdatarole.Checked)
00188             {
00189                 this.DDLeuselectdatarole.Enabled = true;
00190                 this.DDLeuselectfacility.Enabled = false;
00191             }
00192             else
00193             {
00194                 this.DDLeuselectdatarole.Enabled = false;
00195                 this.DDLeuselectfacility.Enabled = true;
00196             }
00197         }
00204         protected void RBeuselectfacility_CheckedChanged(object sender, EventArgs e)
00205         {
00206             if (this.RBeuselectfacility.Checked)
00207             {
00208                 this.DDLeuselectdatarole.Enabled = false;
00209                 this.DDLeuselectfacility.Enabled = true;
00210             }
00211             else
00212             {
00213                 this.DDLeuselectdatarole.Enabled = true;
00214                 this.DDLeuselectfacility.Enabled = false;
00215             }
00216         }
00223         protected void BTNaddUser_Click(object sender, EventArgs e)
00224         {
00225             string actionMessage = "";
00226             bool success = this.ValidateData(ref actionMessage);
00227             if (success)
00228             {
00229                 UserData userData = this.GetUserDataFromMask(null);
00230                 success = UserManagement.AddUser(userData, ref actionMessage);
00231                 if (success)
00232                 {
00233                     UI.Common.UserManagement.InitializeUsersList(this.DDLselecteduser);
00234                     this.DDLselecteduser.SelectedValue = userData.Login;
00235                     this.ShowUser(this.SelectedUser);
00236                     this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.viewUser;
00237                     this.TXTeuusername.Text = "";
00238                 }
00239             }
00240             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage( this.LBLresult,
00241                                                                 actionMessage,
00242                                                                 success);
00243         }
00250         protected void BTNedit_Click(object sender, EventArgs e)
00251         {
00252             this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.editUser;
00253 
00254         }
00261         protected void BTNsaveChanges_Click(object sender, EventArgs e)
00262         {
00263             string actionMessage = "";
00264             bool success = this.ValidateData(ref actionMessage);
00265             if (success)
00266             {
00267                 UserData userData = this.SelectedUser;
00268                 userData = this.GetUserDataFromMask(userData);
00269 
00270                 success = UserManagement.ModifyUser(userData, ref actionMessage);
00271 
00272                 if (success)
00273                     this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.viewUser;
00274             }
00275             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00276                                                                 actionMessage,
00277                                                                 success);
00278         }
00285         protected void BTNdiscard_Click(object sender, EventArgs e)
00286         {
00287             this.ShowUser(this.SelectedUser);
00288             this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.viewUser;
00289         }
00290 
00291                 protected void DDLaputype_SelectedIndexChanged(object sender, EventArgs e)
00292                 {
00293                         UI.Common.UserManagement.InitializeFunctionalRolesListByUserType(this.DDLeufunctionalrole, this.SelectedUserType);
00294                 }
00295                 #endregion
00296         #region Private helper methods
00297 
00303         void ShowUser(UserData user)
00304         {
00305             this.DDLaputype.SelectedValue = user.TypeText;
00306                         UI.Common.UserManagement.InitializeFunctionalRolesListByUserType(this.DDLeufunctionalrole, this.SelectedUserType);
00307                         ListItem listItem = this.DDLeufunctionalrole.Items.FindByText(user.FunctionalRole.Name);
00308                         if (listItem != null)
00309                                 this.DDLeufunctionalrole.SelectedValue = user.FunctionalRole.Name;
00310 
00311             if (user.DataRoleSpecified)
00312             {
00313                 this.DDLeuselectdatarole.SelectedValue = user.DataRole.Name;
00314                 this.DDLeuselectfacility.Enabled = false;
00315                 this.DDLeuselectdatarole.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00316             }
00317             else
00318             {
00319                 if (user.FacilitySpecified)
00320                 {
00321                     this.DDLeuselectfacility.SelectedValue = user.Facility.Name;
00322                     this.DDLeuselectfacility.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00323                     this.DDLeuselectdatarole.Enabled = false;
00324                 }
00325             }
00326 
00327             this.TXTeupassword.Text = user.Password;
00328             this.TXTconfirmpassword.Text = user.Password;
00329 
00330             this.TXTeucompletename.Text = user.CompleteName;
00331             this.TXTeuemailaddress.Text = user.Email;
00332 
00333             this.RBeuselectfacility.Checked = user.FacilitySpecified;
00334             this.RBselectdatarole.Checked = user.DataRoleSpecified;
00335         }
00339         void EnableDisableControls()
00340         {
00341             this.BTNaddUser.Enabled     = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.addUser;
00342             this.BTNsaveChanges.Enabled = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.editUser;
00343             this.BTNedit.Enabled        = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser;
00344             this.BTNdiscard.Enabled     = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00345 
00346             this.BTNcreateuser.Enabled  = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser;
00347             this.BTNdelete.Enabled      = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser; 
00348 
00349             this.TXTeuusername.Enabled = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser;
00350 
00351             this.LBLselecteduser.Visible = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.addUser;
00352             this.BTNdelete.Visible       = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.addUser;
00353             this.DDLselecteduser.Visible = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.addUser;
00354             this.DDLselecteduser.Enabled = this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser;
00355 
00356             this.DDLaputype.Enabled          = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00357             this.DDLeufunctionalrole.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00358 
00359             this.DDLeuselectdatarole.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser && this.SelectedUser.DataRoleSpecified;
00360             this.DDLeuselectfacility.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser && this.SelectedUser.FacilitySpecified;
00361 
00362             this.TXTeucompletename.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00363             this.TXTeuemailaddress.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00364 
00365             this.TXTeupassword.Enabled      = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00366             this.TXTconfirmpassword.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00367 
00368             this.RBeuselectfacility.Enabled = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00369             this.RBselectdatarole.Enabled   = this.CurrentAddEditUsers_PageMode != AddEditUsers_PageMode.viewUser;
00370 
00371             UI.Common.UserManagement.EnableCommonControls(this, this.CurrentAddEditUsers_PageMode == AddEditUsers_PageMode.viewUser);
00372 
00373             this.LBLadmin.ForeColor = RAIS.UI.Common.Constants.COLOR_OF_MENU_BAR_TEXT_HIGHLIGHT;
00374         }
00381         bool ValidateData(ref string returnMessage)
00382         {
00383                         if (!this.ValidateFunctionRole(ref returnMessage))
00384                                 return false;
00385 
00386                         return this.ValidatePassword(ref returnMessage);
00387         }
00394         bool ValidatePassword(ref string returnMessage)
00395         {
00396             if (this.TXTeupassword.Text.Length != 0)
00397             {//there was intention to change or to set the password
00398                 if (this.TXTeupassword.Text == this.TXTconfirmpassword.Text)
00399                     return true;
00400                 else
00401                 {
00402                     returnMessage = RAIS.Common.Messages.PASSWORD_MISMATCH;
00403                     return false;
00404                 }
00405             }
00406             else
00407                 return true;
00408         }
00415                 bool ValidateFunctionRole(ref string returnMessage)
00416                 {
00417                         if (this.SelectedFunctionRole == null)
00418                         {
00419                                 returnMessage = RAIS.Common.Messages.FUNCTION_ROLE_IS_MANDATORY;
00420                                 return false;
00421                         }
00422                         else
00423                                 return true;
00424                 }
00433         UserData GetUserDataFromMask(UserData userData)
00434         {
00435             if( userData == null )
00436                 userData = new UserData();
00437 
00438             switch( this.CurrentAddEditUsers_PageMode )
00439             {
00440                 case AddEditUsers_PageMode.addUser:  userData.Login = this.TXTeuusername.Text; break;
00441                 case AddEditUsers_PageMode.editUser: userData.Login = this.DDLselecteduser.SelectedValue; break;
00442             }
00443 
00444             userData.TypeText = this.DDLaputype.SelectedValue;
00445             if( this.TXTeupassword.Text.Length != 0 ) //blank password is not allowed
00446                 userData.Password   = this.TXTeupassword.Text;
00447 
00448             userData.CompleteName = this.TXTeucompletename.Text;
00449             userData.Email      = this.TXTeuemailaddress.Text;
00450             
00451             if(this.RBeuselectfacility.Checked)
00452             {
00453                 userData.DataRoleType = (int)UserData.DataRoleIndication.Facility;
00454                 userData.Facility = this.SelectedFacility;
00455             }
00456             else
00457             if(this.RBselectdatarole.Checked)
00458             {
00459                 userData.DataRoleType = (int)UserData.DataRoleIndication.DataRole;
00460                 userData.DataRole = this.SelectedDataRole;
00461             }
00462 
00463             userData.FunctionalRole = this.SelectedFunctionRole;
00464 
00465             return userData;
00466         }
00471         void RecoverLockedUser(UserData user)
00472         {
00473             string returnMessage = "";
00474             //user.Locked = false;
00475                         user.Status = UserData.UserStatus.Active;
00476                         bool success = ApplicationLogicLayer.UserManagement.ModifyUser(user, ref returnMessage);
00477             if (success)
00478             {
00479                 UI.Common.UserManagement.InitializeUsersList(this.DDLselecteduser);
00480                 this.DDLselecteduser.SelectedValue = user.Login;
00481                 ShowUser(this.SelectedUser);
00482                 this.TXTeuusername.Text = "";
00483                 returnMessage = RAIS.Common.Messages.RESTORED_LOCKED_USER;
00484             }
00485             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, returnMessage, success);
00486         }
00491         bool CreateNewTemporalUser()
00492         {
00493             string returnMessage = "";
00494             bool success = !ApplicationLogicLayer.UserManagement.UserExists(this.TXTeuusername.Text, ref returnMessage);
00495 
00496             if (success)
00497             {
00498                 this.CurrentAddEditUsers_PageMode = AddEditUsers_PageMode.addUser;
00499                 this.TXTeupassword.Text = "";
00500                 this.TXTconfirmpassword.Text = "";
00501                 this.TXTeucompletename.Text = "";
00502                 this.TXTeuemailaddress.Text = "";
00503             }
00504             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, returnMessage, success);
00505             return success;
00506         }
00507         #endregion
00508         #region Properties
00509 
00512         private UserData SelectedUser
00513         {
00514             get
00515             {
00516                 try
00517                 {
00518                     UserData userData = ApplicationLogicLayer.UserManagement.GetUserData(this.DDLselecteduser.SelectedValue);
00519                     return userData;
00520                 }
00521                 catch(Exception)
00522                 {
00523                     return null;
00524                 }
00525             }
00526         }
00530         private FunctionRole SelectedFunctionRole
00531         {
00532             get
00533             {
00534                 FunctionRoles functionRoles = (FunctionRoles)this.Session[RAIS.UI.Common.Constants.FUNCTION_ROLES_TAG];
00535                 if (functionRoles != null && functionRoles.ContainsKey(this.DDLeufunctionalrole.SelectedValue))
00536                     return functionRoles[this.DDLeufunctionalrole.SelectedValue];
00537                 else
00538                     return null;
00539             }
00540         }
00544         private DataRole SelectedDataRole
00545         {
00546             get
00547             {
00548                 DataRoles dataRoles = (DataRoles)this.Session[UI.Common.Constants.DATA_ROLES_TAG];
00549                 if (dataRoles != null)
00550                     return dataRoles[this.DDLeuselectdatarole.SelectedValue];
00551                 else
00552                     return null;
00553             }
00554         }
00558         private Facility SelectedFacility
00559         {
00560             get
00561             {
00562                 Facilities facilities = RAIS.ApplicationLogicLayer.UserManagement.Facilities;
00563                 if (facilities != null)
00564                     return facilities[this.DDLeuselectfacility.SelectedValue];
00565                 else
00566                     return null;
00567             }
00568         }
00572         private AddEditUsers_PageMode CurrentAddEditUsers_PageMode
00573         {
00574             get
00575             {
00576                 if (this.Session[UI.Common.Constants.ADD_EDIT_USER_PAGE_MODE_TAG] != null)
00577                 {
00578                     return (AddEditUsers_PageMode)this.Session[UI.Common.Constants.ADD_EDIT_USER_PAGE_MODE_TAG];
00579                 }
00580                 else
00581                     return AddEditUsers_PageMode.viewUser;
00582             }
00583             set
00584             {
00585                 string message;
00586                 switch (value)
00587                 {
00588                     case AddEditUsers_PageMode.addUser: message = RAIS.Common.Messages.ADDING_NEW_USER; break;
00589                     case AddEditUsers_PageMode.editUser: message = RAIS.Common.Messages.EDITTING_EXISTING_USER; break;
00590                     default: message = ""; break;
00591                 }
00592                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, message, true);
00593                 this.Session[UI.Common.Constants.ADD_EDIT_USER_PAGE_MODE_TAG] = value;
00594                 this.EnableDisableControls();
00595             }
00596         }
00600                 private UserTypeData SelectedUserType
00601                 {
00602                         get
00603                         {
00604                                 UserTypes userTypes = RAIS.ApplicationLogicLayer.UserManagement.UserTypes;
00605                                 if (userTypes != null)
00606                                         return userTypes[this.DDLaputype.SelectedValue];
00607                                 else
00608                                         return null;
00609                         }
00610                 }
00614                 protected UserData CurrentUser
00615                 {
00616                         get { return (UserData)this.Session[UI.Common.Constants.CURRENT_USER_TAG]; }
00617                 }
00618                 #endregion
00619     }
00620 }